Compression of test pattern response data into signatures is a well-established technique that has been used for decades, especially for logic built-in self-test (LBIST). More recently, it has been used as part of a more general approach for test data compression, in order to save data volume and test time.
One problem with compressing test responses into signatures is dealing with circuits that produce unknown responses. An unknown response, if allowed to be captured into a signature register, will re-circulate, quickly making the final signature unpredictable. If just a single unknown value is captured, it is possible to predict two possible signatures, either of which could be assumed to be a non-defective response. However, when multiple unknown values are captured into a signature, the number of possible good signatures grows exponentially, and it quickly becomes impractical to predict all possible good response signatures.
One approach to dealing with unknown response values is to prevent the unknown values from being captured into the signature registers. One way of doing this is to provide a mechanism to mask out the unknown values before they are captured into the signature registers.
However, the conventional methods lack the capability to mask out the specific channel bits containing unpredictable or unknown values. Without this flexibility, predictable values may be unnecessarily masked, in order to ensure the masking of the unpredictable values. When masking out the predictable values, over-masking occurs, and reduces the effectiveness of the test patterns. For example, faults targeted by the test patterns may not be detected if the channel bit used to observe the fault's effect is masked due to over-masking.